System and Method of Integrating Enterprise Applications

ABSTRACT

The present disclosure includes systems and techniques relating to enterprise application integration. In general, one aspect of the subject matter described in this specification can be embodied in a computer system including a service oriented architecture (SOA), where the system includes a composite application configured to present sales targeted information by combining services from multiple application resources on a network, wherein the multiple application resources include: a sales force automation (SFA) tool configured to automate sales and sales force management functions; a real-time predictive analytics tool configured to evaluate customer purchasing data and recommend products or services based on the customer purchasing data; a knowledge management tool configured to search and retrieve data across multiple integrated applications; and a calendar tool configured to manage appointment scheduling. The multiple application resources can further include a collaboration tool; and a business intelligence tool, including at least one live news feed.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation (and claims the benefit of priorityunder 35 USC 120) of U.S. application Ser. No. 13/230,304, filed Sep.12, 2011, now allowed, which is a continuation of U.S. application Ser.No. 11/582,140, filed Oct. 16, 2006, now U.S. Pat. No. 8,019,632, issuedSep. 13, 2011. Both of these prior applications are incorporated byreference in their entirety for all purposes.

TECHNICAL FIELD

The present disclosure relates to enterprise application integration.

BACKGROUND

Modern companies often rely on multiple enterprise applications(computer programs and systems designed to provide specificfunctionality) to help manage and run their businesses. For example, CRM(Customer Relationship Management) tools are often used by companies tomanage their relationships with customers based on analysis ofinformation stored for existing customers (and potential customers). Inmany cases, a company will have multiple independently establishedcomputer systems designed to address specific business processes orobjectives. Such independent systems often come from different vendorsand often cannot be readily integrated with each other.

Enterprise application integration involves the use of various methods,software and computer systems to integrate a set of enterprise computerapplications, and various specific integrations of one application withanother have been made previously. In addition, a more recent approachhas involved moving toward a service-oriented architecture (SOA) inwhich resources on a network are made available as independent servicesthat can be accessed without knowledge of their underlying platform. ASOA need not be tied to a specific technology and may be implementedusing a wide range of interoperability standards, such as Remoteprocedure call (RPC), Distributed Component Object Model (DCOM), objectrequest broker (ORB), and Web Services Description Language (WSDL).

SUMMARY

The present disclosure includes systems and techniques relating toenterprise application integration. In general, one aspect of thesubject matter described in this specification can be embodied in acomputer system including a service oriented architecture (SOA), wherethe system includes a composite application configured to present salestargeted information by combining services from multiple applicationresources on a network, wherein the multiple application resourcesinclude: a sales force automation (SFA) tool configured to automatesales and sales force management functions; a real-time predictiveanalytics tool configured to evaluate customer purchasing data andrecommend products or services based on the customer purchasing data; aknowledge management tool configured to search and retrieve data acrossmultiple integrated applications; and a calendar tool configured tomanage appointment scheduling.

The multiple application resources can further include a collaborationtool configured to resolve access rights restrictions and allow multipleusers to access information in real time; and a business intelligencetool configured to gather and organize business information frommultiple sources, including at least one live news feed. The compositeapplication can include a framework defining a translation serviceconfigured at runtime by checking for query handlers that fit in theframework, a query handler being configured to convert between a firstlanguage service of the SFA tool and a second language service ofanother of the application resources.

The SFA tool can include a customer relationship management (CRM) tool.The CRM tool can support on-demand indexing, and the knowledgemanagement tool need not support on-demand indexing. Moreover, theknowledge management tool can support natural language queries.

In addition, the subject matter described in this specification can beembodied in a computer system including a service oriented architecture(SOA), where the system includes means for presenting sales targetedinformation by combining services from multiple network accessible meansfor providing application resources including: means for automatingsales and sales force management functions; means for evaluatingcustomer purchasing data and recommending products or services based onthe customer purchasing data; means for searching and retrieving dataacross multiple integrated applications; and means for managingappointment scheduling.

The multiple network accessible means for providing applicationresources can further include means for resolving access rightsrestrictions and allowing multiple users to access information in realtime; and means for gathering and organizing business information frommultiple sources, including at least one live news feed. The means forpresenting sales targeted information can include means for defining atranslation service configured at runtime by checking for queryhandlers, a query handler including means for converting between a firstlanguage service of the means for automating and a second languageservice of another of the multiple network accessible means forproviding application resources.

The means for automating can include means for managing customerrelationships. The means for managing customer relationships can includemeans for on-demand indexing, and the means for searching and retrievingdata across multiple integrated applications can include means forbackground crawling and indexing. Moreover, the means for searching andretrieving data across multiple integrated applications can includemeans for supporting natural language queries.

Another aspect of the subject matter described in this specification canbe embodied in a computer-implemented method including combiningservices from multiple application resources on a network, the combiningincluding interfacing with a sales force automation (SFA) toolconfigured to automate sales and sales force management functions,interfacing with a real-time predictive analytics tool configured toevaluate customer purchasing data and recommend products or servicesbased on the customer purchasing data, interfacing with a knowledgemanagement tool configured to search and retrieve data across multipleintegrated applications, and interfacing with a calendar tool configuredto manage appointment scheduling; and presenting sales targetedinformation from results obtained through the combining.

The combining can include interfacing with a collaboration toolconfigured to resolve access rights restrictions and allow multipleusers to access information in real time. The combining can includeinterfacing with a business intelligence tool configured to gather andorganize business information from multiple sources, including at leastone live news feed. The combining can include checking for queryhandlers that fit in a framework defining a translation serviceconfigured at runtime; and converting with a query handler between afirst language service of the SFA tool and a second language service ofanother of the application resources.

Interfacing with the SFA tool can include interfacing with a customerrelationship management (CRM) tool. The combining can include connectingon-demand indexing supported by the CRM tool with background crawlingand indexing supported by the knowledge management tool. The combiningcan include connecting on-demand indexing supported by the CRM tool withnatural language queries supported by the knowledge management tool.Furthermore, the methods described in this specification can be embodiedin a computer program product encoded on a computer-readable medium andincluding instructions operable to cause data processing apparatus toperform method operations.

Particular embodiments can be implemented to realize one or more of thefollowing advantages. The robust knowledge repository of a traditionalportal can be combined with a more active analytical tool capable ofproviding advice and collaborative functionality. Sales organizationscan be provided with an integrated desktop with built-in, real-timeanalytics and real-time external data integration, including knowledgemanagement and readily-accessible business intelligence.

An integrated view of customer data can be provided, enabling a betterunderstanding of customers and the marketplace. User efficiency can beincreased and training time decreased. Sales cycle time can be reduced,process quality and data integrity can be improved, and more consistentcustomer experiences can be fostered.

New capabilities can be developed more rapidly and readily integratedinto the system. Data from multiple resources can be combined in acomposite application for presentation and interaction among theresources, and the data can remain in the respective resources. There isno need to store all data from all sources in a CRM tool. Thus,customized features can be developed and added to a unified solutionsales package with decreased implementation risk, and sales agents canbe given rapid access to relevant content needed to support customercare and sales efforts.

Owners of the system can be protected from the rapidly changingstandards and technology choices facing companies, since changes in anunderlying system component can be accommodated by a correspondingchange in a translation service employed by the larger system withoutaffecting other system components. Moreover, a solution sales system canprovide a comprehensive set of pre-integrated components along with alightweight reusable framework for custom application development,allowing rapid response to business changes.

The details of one or more embodiments of the present systems andtechniques are set forth in the accompanying drawings and thedescription below. Other features, aspects, and advantages will becomeapparent from the description, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an example SOA computer system.

FIG. 2 shows another example SOA computer system.

FIG. 3 shows an example integration between a CRM tool and a knowledgemanagement (KM) tool.

FIG. 4 shows another example integration of a KM tool with a CRM tool.

FIG. 5 shows an example reusable service framework for integrating newtools into a composite application.

FIG. 6 shows example processes of integrating tools into a compositeapplication.

DETAILED DESCRIPTION

FIG. 1 shows an example SOA computer system 100. The computer system 100combines multiple loosely coupled services into a composite application110, which can be implemented using an enterprise portal, web portal, orother user interface structure. The composite application 110 presentssales targeted information by combining services from multipleapplication resources on a network 130, which can be a local areanetwork, wide area network, public network, enterprise network, or acombination of these.

As used herein, the term “SOA” indicates a service-oriented architecturein general, and does not imply compliance with any particular SOAstandard. In addition, the terms “application resource” and “tool” areused (interchangeably) herein to refer to a combination of software andhardware. Note that a “tool” can thus include a software applicationsold by a first vendor and an underlying computer platform (hardwareplus operating system) sold by one or more different vendors.

The application resources combined by the composite application 110include a sales force automation (SFA) tool 140, a real-time predictiveanalytics tool 150, a knowledge management (KM) tool 160, and a calendartool 170. The SFA tool 140 can be configured to automate sales and salesforce management functions. The SFA tool 140 can include additionalsales and marketing directed functionality. For example the SFA tool 140can be a customer relationship management (CRM) tool, such as existingCRM tools that are commercially available from Oracle Corporation ofRedwood Shores, Calif. (and also Siebel Systems, Inc., which waspurchased by Oracle Corporation).

The real-time predictive analytics tool 150 can be configured toevaluate customer purchasing data and recommend products or servicesbased on the customer purchasing data, such as Real-Time Decision (RTD)software available from Sigma Dynamics (whose intellectual property waspurchased by Oracle Corporation of Redwood Shores, Calif.). Thereal-time predictive analytics tool 150 can be used to provide salesagents with insights about customer purchasing history and preferences,matched against recommended solutions.

The KM tool 160 can be configured to search and retrieve data acrossmultiple integrated applications, such as InQuira software availablefrom InQuira, Inc. of San Bruno, Calif. The KM tool 160 can be leveragedto provide a comprehensive content management and knowledge managementsolution for identifying, acquiring, organizing and sharing any type ofenterprise information with co-workers, customers or customer-facingagents. This component can support natural language queries and canderive the intent of an agent's request based on advanced linguistictechniques, rapidly delivering an accurate answer. In effect, theadvanced knowledge management capability within the portal can multiplythe potential impact of any single sales representative by synthesizingthe experiences of all sales persons, categorizing such experiences andmaking them available in a configured manner to help close a deal.

The calendar tool 170 can be configured to manage appointment schedulingand can also be configured to manage electronic communications, such asMicrosoft Outlook and Exchange Server software, available from MicrosoftCorporation of Redmond, Wash. Managing contacts and keeping track ofmeetings and appointments is a big part of any sales agent's day. Manyagents rely on the Microsoft Outlook e-mail product to manage contactsand meetings, and find it time-consuming to synchronize their localinformation with an enterprise CRM system. By integrating the calendartool 170 that includes contact and email functionality (e.g., MicrosoftExchange Server), an agent can update contact information or schedulemeetings, and the system 100 pulls these data objects from the tool 170and displays them within the user interface (e.g., within a enterpriseportal), which can significantly boost agent productivity and makerelevant information available to other agents.

Additional application resources can also be combined in the system 100,such as a business intelligence tool 180 or a collaboration tool (notshown). The business intelligence tool 180 can be configured to gatherand organize business information from multiple sources, including atleast one live news feed. For example, the business intelligence tool180 can include business insight software available from OneSourceInformation Services, Inc. of Concord, Mass. The business intelligencetool 180 can provide integrated business content from a library ofbusiness knowledge, including news, articles, trends and marketresearch, integrated from thousands of sources worldwide.

Integrating a business intelligence tool 180 allows the system topresent biographies of key executives, strategic initiatives of thecompany, and also industry analysis for the particular industry anaccount is in, such as competitors and industry trends. This allows thesales professional to get a full picture of that account and also theindustry context for the account (company). Based on this intelligence,delivered directly into the user interface, agents can uncover risksfrom changes in corporate structures, mergers and regulatory changes,and react quickly to changes in positioning. They can efficientlyevaluate prospective partners or competitors, and can craft morepersonalized campaigns and messages.

The collaboration tool can be configured to resolve access rightsrestrictions and allow multiple users to access information in realtime. For example, the collaboration tool can include Share Point PortalServer software, available from Microsoft Corporation of Redmond, Wash.Using a collaboration tool can enable any person with access to the webto work simultaneously with the sales agent to address an issue. Forexample, a sales agent in pursuit of a deal may have a need for quickadvice and guidance from an internal or external expert. Thus, thesystem 100 can include a collaboration tool to allow collaborators toaccess the same system information in real time.

The system 100 can be viewed as a solution sales portal that presentssales targeted information to sales agents. The system 100 can also beviewed as an integrated desktop for sales agents. The system 100 candeliver business capabilities such as pipeline management, automatedprobability of sale, automated up sell/cross sell recommendations basedon historical data, collaboration, and natural language searching. Thesebusiness capabilities can be provided to sales representatives in asingle, integrated sales desktop application leveraging enablingtechnologies from Siebel, Siebel RTD (Sigma Dynamics), InQuira,OneSource, and Microsoft (as mentioned above).

Integrating such independently established systems (e.g., Oracle/Siebel,SAP, etc.) across disparate business processes can be accomplished usingdata replication via custom interfaces with front office and back officesystems. Many application resources available from commercial vendorshave recently introduced support for SOA, but such systems often fail toemploy a common, standardized language for the services offered. Forexample, the Siebel Component Assembly (SCA) product (introduced in2005) provided a SOA for interfacing with the product, but this servicewas limited to connecting to data sources that can be viewed asdatabases. Thus, the SCA product issues Structured Query Language (SQL)statements to other data sources.

To address these differences in language (communication interfaceprotocols/formats) for the various services offered by the applicationresources 140-180, the system 100 can include a translation service thatoperates between the tools. The translation service can take a queryfrom a first of the tools, turn this query into a query formattedappropriately for a second of the tools, and then repackage the resultof the query as appropriate for return to the first tool.

The translation service can be part of the composite application 110,which can include a framework 120 that defines the translation service.The framework 120 can allow the translation service to be configured atruntime by checking for query handlers that fit in the framework 120.For example, the framework 120 can include an abstract class for queryhandlers whose code are located and incorporated into the compositeapplication at runtime. Thus, query handlers 122 and 124 can beidentified, loaded and executed at runtime to perform translations. Afirst query handler 122 can be configured to convert between a firstlanguage service of the SFA tool 140 and a second language service ofthe real-time predictive analytics tool 150, and a second query handler124 can be configured to convert between the first language service ofthe SFA tool 140 and a third language service of the businessintelligence tool 180. Thus, the system 100 can be readily expandable byadding new query handlers to convert a language service of a newly addedapplication resource.

FIG. 2 shows another example SOA computer system 200. As with the system100, the system 200 can support first point of contact interactions withcustomers, providing sales agents with on-demand, relevant, real-timeexternal data feeds, and ready access to analytics based on bothexternal and internal intelligence sources. The system 200 can include acomposite application 210 with a translation service 215 built on top ofan existing SOA product, such as the Siebel Component Assembly product,and the composite application 210 can provide a componentized CRMapplication. In addition, the translation service 215 can employ anopen, XML (Extensible Markup Language) meta-data based framework.

The system 200 includes an analytics resource 220, such as can beprovided by RTD software available from Sigma Dynamics (whoseintellectual property was purchased by Oracle Corporation of RedwoodShores, Calif.). The analytics resource 220 can be configured to runanalysis on historical data and real-time stream events. The analyticsresource 220 can include a built-in, fully configurable proactive alertsengine, and performance management and customer feedback tool (CSAT).Moreover, the analytics resource 220 can provide product ranking andrecommendations with likelihood of acceptance indications.

The system 200 includes a knowledge management (KM) resource 230, whichcan include natural language search capabilities, such as can beprovided by InQuira software available from InQuira, Inc. of San Bruno,Calif. The system 200 includes a Customer Relationship Management (CRM)resource 240, such as can be provided by existing CRM tools that arecommercially available from Oracle Corporation of Redwood Shores, Calif.(and also Siebel Systems, Inc., which was purchased by OracleCorporation).

The system 200 includes a real-time external business data resource 250,such as can be provided by business insight software available fromOneSource Information Services, Inc. of Concord, Mass., which can beaccessed through a firewall 255. The system 200 includes calendaringand/or collaboration resource(s) 260, such as can be provided byOutlook, Exchange Server and Share Point Portal Server software,available from Microsoft Corporation of Redmond, Wash.

The system 200 can interact with sales agents and managers in a varietyof ways. The system 200 can include a portal user interface (UI) 272, aWinForms based UI 274, a custom UI 276, or a combination of these. Inany event, the UI can provide a unified view of customer data pulledfrom multiple integrated systems. The system 200 can provide up-to-datesales support recommendations, offerings, information and alerts. Inaddition, the system 200 can provide separate account manager andexecutive views.

The composite application 210 can employ a SOA that runs natively on.NET and J2EE application servers. The composite application 210 caninterface with the resources 220, 230, 240, 250, 260 to provideoperational CRM functionality, such as forecasting, quoting, leaddistribution, opportunity management, order management, proposalgeneration, collaboration and pipeline management. The compositeapplication 210 can interface with the resources 220, 230, 240, 250, 260to provide business insight functionality, such as cross sell/up sell,knowledge management, compensation/attainment, competency/learning,performance management, metrics and new product introduction. Moreover,the composite application 210 can interface with the resources 220, 230,240, 250, 260 to provide productivity functionality, such as calendar,email, contact and task management.

The system 200 can perform analyses of both historical customer data andreal-time stream events, and can provide product rankings andrecommendations. A fully-configurable, proactive alerts engine candeliver timely advice to sales personnel: customized alerts aboutmeetings, training events, etc., as well as alerts about opportunitiesand solutions, recommending appropriate products or services fortargeted customers, and predicting the likelihood of customer interest.

Each resource 220, 230, 240, 250, 260 can be integrated into the system200 using a custom interface appropriate to each respective underlyingsystem. Furthermore, integration of a resource 220, 230, 240, 250, or260 can involve the use of an existing SOA CRM product, such as theSiebel Component Assembly (SCA) product. For example, the calendaringand/or collaboration resource(s) 260 can be integrated using customadapter(s) through SCA that connect directly to the Microsoft Exchangeserver to provide calendar and contact synchronization functions. SCAalso packages a custom Outlook Add-In that can be installed in Outlookto provide sales data that can be directly accessed in Outlook. TheSharepoint Portal Server embeds the custom Sharepoint TeamSpace sitedirectly in the Portal UI. A user can automatically create shared teamspaces against sales entities in order to share specific information toexternal users that might not have direct access to the sales portal.This team space can be viewed through the embedded object in the portalUI, or can be accessed directly through a URL link directly accessingthe Sharepoint Portal Server.

FIG. 3 shows an example integration between a CRM tool and a knowledgemanagement (KM) tool. A middle tier component 300 of a CRM tool (e.g.,an SCA application server) can connect CRM data 320 to a user interface326 through an object manager 302. The CRM data 320 can be provided to aKM search server 324 of the KM tool. In this example, the CRM toolsupports on-demand indexing, whereas the KM tool does not supporton-demand indexing. Rather, the KM tool performs background crawling andindexing of data. Thus, the CRM data 320 can be provided to the KMsearch server 324 for crawling and indexing.

The middle tier component 300 of the CRM tool can include an eventhandler 304 that triggers both a search updater service 306 and a searchbuilder service 308. These in turn feed data to a KM update engine 310.Likewise, a search service 314 can feed data to a KM search engine 316.The CRM component 300 runs the update and builder services 306 and 308at run time, triggered by the event handler 304. The CRM component 300also provides an update engine interface 312 and a search engineinterface 318. The interfaces 312 and 318 allow the integration of theCRM component 300 with the search server 324.

Because the CRM component 300 uses the search engine 316 to build andupdate at runtime, if the search engine 316 does not already supportthis, the search engine 316 can be modified to create dummy build andupdate engines. Note that this can be updated if a later releasesupports on-demand indexing. When the search server 324 does not supporton-demand indexing, the search server 324 can provide the ability tocrawl and index data independent of the CRM component 300.

The KM search server 324 can index information found in the CRM data320, an KM information manager 330, and a public network 328 (e.g., theInternet). The KM search server 324 is operationally connected to KMdata 322, where the indexing is stored. The KM tool can support naturallanguage queries and can include the KM information manager 330 thatconnects with information manager (IM) data 334 and an IM user interface332. Note that the analytics tool can also use the InformationManager/Content Manager to provide input.

When searching, the response for the CRM tool's data can be tailored todisplay and function within the tool seamlessly. For a response outsideof the CRM tool, like a website, an Internet browser can be openedinstead of inside the CRM tool. The search engine can be tailored tolimit data based on the intent of the CRM tool. For example, whensearching for a company, the word “company” can limit the search to onlycompany objects. This aspect can be provided as part of the naturallanguage querying.

FIG. 4 shows an example integration of a KM tool (including InQuirasoftware) with a CRM tool (including SCA software). Siebel ComponentAssembly (SCA) allows third party search engines to be integrated byimplementing at least two interfaces. One is responsible for aiding theprocess of building indexes, and the other is responsible for aiding theprocess of searching and returning data. Both of these processes runon-demand within SCA. However, InQuira's system does not supporton-demand indexing, so the architecture of SCA search changes a littlewhen connecting to the InQuira architecture.

The SCA search component includes an SCA application server 400 thatconnects a CRM database 402 with a user interface 404. When a userperforms a command, a service starts. The service calls thecorresponding engine class to communicate with the search server. If itis a search command, data is returned back to the user.

The SCA search component includes build and update functionality used toindex information to be searched. The SCA application server 400includes an object manager 406, event handler 408, search builderservice 410 and search updater service 412. These can generate an arrayof documents 414, which can be converted by IUpdateEngine 418 into thesearch engine server's expected document object for indexing. Forexample, a search document can be converted into an IDocument objectthen passed to the search engine server to index. An InQuiraUpdateEngine416 can handle the interface to the InQuira search server 440. In someimplementations, the InQuiraUpdateEngine 416 need not update the InQuirasearch server 440, and in other implementations, the InQuiraUpdateEngine416 does update the InQuira search server 440.

In addition to indexing functionality, the SCA search component includessearch functionality. A sales portal search engine 420 (animplementation of ISearchEngine 424) takes a query from search service426 and converts the query into the search server's request object andpasses the request object to the search server. The search serverreturns its response to the sales portal search engine 420, which thenconverts the response into an array of search documents 428 and returnsthis array to the search service 426. An InQuiraSearchEngine 422 canhandle the interface to the InQuira search server 440. Moreover,communications with the InQuira search server 440 can be performed usingSOAP (Simple Object Access Protocol), starting with connect 430, thensending an XML request 432, receiving an XML response 434, andterminating with disconnect 436.

In the SCA search component, a search document should be in the sameformat when it gets built or indexed and when it gets returned from asearch. A search document's format is derived from the format of thecorresponding search object (searchObj) created using the workbench. AsearchObj is not only responsible for setting the values to be indexedand searched; a searchObj also specifies the related business component(busComp) and sets UI functionalities. The busComp is the correspondingbusiness object in SCA that is to be searched and displayed. If thesearchObj relates to an external object, any busComp will work; it justwill not be used. The resultFields in the searchObj is what will bedisplayed in a list of results. Under uiInfo, the resultDescriptionFieldand resultNameField are set using the resultFields. The drillDownDefdefines what will be displayed when this searchObj is clicked.

The InQuira system provides a search engine server that allows naturallanguage querying. InQuira has an API (Application Program Interface) tointegrate with an application and uses SOAP to communicate with theserver. InQuira builds indexes by going through each object of acollection, better known as crawling, preprocessing each object, placingeach processed object into a database, and finally indexing each object.As of version 7.2, Zena (InQuira's API) does not support on-demandindexing. Because of this, indexing is done by using InQuira's AdminTool 470. A crawler 472 is created for each collection, and a set oftasks are processed to index a collection. When the SearchBuilderService410 or SearchUpdaterService 412 is called, the InQuira ServerImplementation of IUpdateEngine 418 does nothing since on-demandindexing is not supported.

InQuira has database, Web, file, Siebel CRM and Information Managercrawlers available to be configured to match the desired collection.However, the Siebel CRM crawler cannot be used to crawl SCA objectsbecause it is a different CRM. Nonetheless, SCA objects derive from thedatabase. Every SCA object to be searched has a searchObj, and thatsearchObj has a corresponding database crawler with a specific SQLstatement that selects the rowid (row identifier), all correspondingfields stated in that searchObj and all relationships defined by theforeign keys in the table(s). Another way to view this is to determinewhat the search engine implementation of InQuira needs to create from asearch document to correspond to a searchObj and what relationships needto be searched against for this object. Take for instance theOpportunity object. Every Opportunity has an Account or Company. Ifasked, “What Siebel Opportunities are there?”, the corresponding Accountor Company name must be selected for this relationship to be searchable.Thus, records 442 can be pulled from the CRM database 402, preprocessedand stored in the InQuira database 460, and an index 444 formed.

InQuira searches by connecting to the server through SOAP, querying theserver, receiving the response, converting the response to correspondingsearch documents, and returning the resulting search documents. Thesales portal search engine 420 (in combination with InQuiraSearchEngine422) implements these tasks to integrate InQuira Search with SCA. Thesales portal search engine 420 can use the class, IClient, from theInQuira API, j2eeclient.jar, to connect and query the server. Toconnect, server properties are set prior to attempting to connect, whichis all done in initialize( ) To query, IClient expects a request as astring in XML format, and another string in XML format is returned asthe response. The sales portal search engine 420 can parse the XMLresponse and convert each answer into a search document based on thecorresponding searchObj. Finally, the resulting search documents arereturned to the search service 426.

The InQuira system can also provide natural language queryfunctionality. When a search is requested, the query gets processedagainst a dictionary 446 including concepts and rules. A concept is agrouping of related words; a rule is a regular expression to be matchedagainst and decides what would be the next step in finding answers 448for the query. This is done by the InQuira Search Engine Server 440.

In addition, the InQuira system includes a information manager, whichcan be integrated with the InQuira search engine server 440. Theinformation manager is a content management system that allows multipleusers to be able to view documents and upload modified or new documents.The information manager can connect with the Web and with an informationmanager database 480. The information manager can be used as an externalcomponent of the executive sales portal and can be used when it is beingsearched or when it is used as a website.

The InQuiraSearchEngine 422, InQuiraUpdateEngine 416, and Sales PortalSearch Engine 420 can be implemented using java classes. TheInQuiraUpdateEngine 416 can employ a dummy class that implementsIUpdateEngine 418 as described above. The InQuiraSearchEngine 422 canemploy an abstract class that implements ISearchEngine 424 and helps aidintegration between SCA and InQuira. The InQuiraSearchEngine abstractclass contains common methods to connect, query, and parse the responsefrom InQuira. If SCA is in a .NET platform, a web service can be createdto communicate with InQuira, which can be provided in a Java platform.The sales portal search engine 420 is an implementation of theInQuiraSearchEngine class that supports SCA objects, Opportunity andCompany (assuming the crawler name is the same), Information Managerwith repository name, sales portal, and crawler name, IM, and Web andfile collections that have a searchObj name, “InQuiraContent.” If thesecriteria do not match, the InQuiraSearchEngine abstract class can beimplemented by extending it and implementing the abstract methods.

In some implementations, there are nine methods. For example, methodprintResponseXMLFlag can be a basic flag that returns true if thedeveloper wants to export the response from the InQuira Search Serveronto a file (e.g., response.xml in C:/). In production, this valueshould be false, as this is meant for debugging purposes only. MethodgetSCACollectionsNames can return a String array of all SCA collectionnames. Method getDefaultSearchObjectName can return the name of a SearchObject in SCA reserved for default browser/URL based content. MethodgetIMRepositoryName can return the name of the Information ManagerRepository used. If there are multiple repositories being used, thecustom methods, which are described below, can be used. MethodgetIMCollectionNames can return a String array of all IM collectionnames. The five methods just described can all be hard-coded.

The custom methods, on the other hand, may not be needed if the methodsjust described are sufficient. If custom methods are not needed, simplyreturn empty, false, or null values. Method getCustomCollectionName andgetCustomID can return the collection name and ID respectively from ananswer element. The answer element can be an org.w3c.dom.Element in xmlform. Each custom collection answer may be different. MethodgetCustomFieldValue can return the value corresponding to the specifiedfield name in SCA for a customized collection from an answer element.This can be done in similar fashion as getCustomCollectionName andgetCustomID. Finally, method isCustomObject can return true if the namegiven corresponds to one of the custom objects names.

The above described approach to integrating a KM tool with a CRM toolcan provide significant flexibility, allowing many different types ofcollections to be searched. In addition, as mentioned above inconnection with FIG. 1, a framework 120 can be used to simplify theintegration of new application resources and language services into theSOA system. For example, the framework 120 can be use to implement dataintegration web services for both the real-time predictive analyticstool 150 (e.g., Sigma Dynamics) and the business intelligence tool 180(e.g., OneSource).

FIG. 5 shows an example reusable service framework for integrating newtools into a composite application. This example is described in thecontext of integrating OneSource, Sigma Dynamics and SCA, but is moregenerally applicable to other system integrations as well. For SCA,integration with external systems was supported by emulating a databaseinteraction pattern (i.e. use the database integration infrastructureprovided with SCA). To integrate new resources with SCA in a compositeapplication, a web service can be implemented that accepts SOAP basedSQL queries from SCA, determines and retrieves the desired data from anexternal system, and then massages the returned data into a tabularformat that is sent back to SCA.

The required types and interfaces used by Siebel SCA fordatabase-oriented communication are available to developers. Forexample, datasource-interface.wsdl defines the IDataSourceService typethat should be implemented for a web service to be callable by SCA. Inaddition, Siebel's SCA schemas use features of the XML Schema standard,for example polymorphic types. These features are fully supported inMicrosoft's .NET framework. Thus, the web services described can beimplemented using Microsoft's .NET 2.0, C#2.0, and Asp.net 2.0technologies.

The reusable service framework benefits from the high level ofcommonality inherent in the database emulation approach described above,and this reusable framework allows several external systems (e.g.,OneSource and Sigma Dynamics) to be readily integrated into thecomposite application (e.g., a sales portal). The framework seeks tominimize the amount of time required to integrate new systems with SCAand creates a simplified extension mechanism of existing integrationfunctionality.

The reusable service framework can be viewed as a pluggablearchitecture. This architecture can include a generic data source webservice 510 including a data source web service 512 that implements theIDataSourceService interface 522 for SCA. The IDataSourceServiceinterface 522 can be an ASP.NET web service derived class that handlesrequests to the web service's.asmx file. This class can implement theIDataSourceService interface 522 defined by the SCA filedatasource-interface.wsdl. The IDataSourceService interface 522 candelegate all requests to the SCADataRepository class to service theactual request. Furthermore, the architecture can include an SCAinterface library 520 generated from SCA data source schemas. The SCAinterface library 520 can be a C# .dll (dynamic link library) generatedfrom the Siebel SCA data source related schemas using wsdl.exe (e.g.,proxies generated from DataSource-Interface.wsdl).

The architecture can include a pluggable SCA library 530 that leverages.NET Attributes and Reflection in order to find and load query handlersdynamically at runtime. The pluggable SCA library 530 can include an SCAdata repository 532, which is a class delegated to by web service tohandle SCA query or update requests. The SCA data repository 532contains a static constructor that uses Reflection to locate Typesmarked with the SCAQueryHandlerAttribute in the containing application'sCodeBase and constructs Dictionary mapping table name strings to theTypes.

The SCA library 530 can include an SCA QueryHandler interface 534, whichis a base interface for classes wishing to act as query handlers. An SCAQueryHandler<T> 536 is an abstract base class for all query handlerclasses. The SCA QueryHandler<T> 536 implements the SCA QueryHandlerinterface 534. In addition, an SCA QueryHandlerAttribute 538 is a .NETAttribute attached to all query handler classes, and which declares theSCA database table name for which the class handles queries.

The above described portions of the pluggable architecture can remainunchanged for each new integration, and the architecture can include aquery handler library 540 that is customized for each external servicethat will be integrated with SCA. A query handler class can be createdfor each Data Object that is mapped to the third party external servicevia a Federation Block in Siebel Workbench. This class can be derivedfrom SCA QueryHandler<T> 536 and have the SCA QueryHandlerAttribute 538(with the name of the table handled) applied to the class definition.For example, the following definition of OpportunitySuccessHandler 550can be used:

[SCAQueryHandler(“SD_OPPORTUNITY_SUCCESS”)] public classOpportunitySuccessHandler : SCAQueryHandler<IntegrationPointResponse> {public OpportunitySuccessHandler( ) { } protected override RowType[ ]ConstructSCARows(IntegrationPointResponse source, string keyColumn,string keyValue) { //body removed for clarity } protected overrideIntegrationPointResponse FetchQueryResults(string id) { //body removedfor clarity } }

In FIG. 5, various query handlers for Sigma Dynamics are shown. Thesequery handlers service Sigma Dynamics query requests and can includeOpportunitySuccessHandler 550, RecommendationAlertHandler 552,OpportunityAlertHandler 554, BroadcastAlertHandler 556, andAttritionAlertHandler 558. The OpportunitySuccessHandler 550 handles SCAtable SD_OPPORTUNITY_SUCCESS. The RecommendationAlertHandler 552 handlesSCA table SD_RECOMMENDED_SOLUTIONS. The OpportunityAlertHandler 554handles SCA table SD_OPPORTUNITY_ALERT. The BroadcastAlertHandler 556handles SCA table SD_BROADCAST_ALERT. The AttritionAlertHandler 558handles SCA table SD_PRODUCT_ATTRITION. Each of these handlers canderive from SCAQueryHandler<T> 536 with a parameterization ofIntegrationPointResponse 560, which is defined in the sdclient.dlllibrary distributed with Sigma Dynamics.

Although not shown in FIG. 5, additional query handlers for OneSourcecan be added to the query handler library 540 or a separate libraryspecific to OneSource. These can include CompanyExecutivesRTBuilder(which handles SCA table OS_EXECUTIVES), BusinessSummaryQueryHander(which handles SCA table OS_BUS_SUMMARY), CAReportsQueryHandler (whichhandles SCA table OS_COMPANY_ANALYSTS_REPORTS), ExecutiveBioQueryHandler(which handles SCA table OS_EXEC_BIO), NewsHeadlinesQueryHandler (whichhandles SCA table OS_RELATED_NEWS), ExecEducQueryHandler (which handlesSCA table OS_EXEC_BIO_EDUCATION), ExecNewsQueryHandler (which handlesSCA table OS_EXEC_BIO_NEWS), StrategicInitQueryHandler (which handlesSCA table OS_STRATEGIC_INITIATIVES), CorpFamilyQueryHandler (whichhandles SCA table OS_CORPORATE_FAMILY), ArticlesQueryHandler (whichhandles SCA table OS_ARTICLES), BalanceSheetQueryHandler (which handlesSCA table OS_BALANCESHEET), RatiosQueryHandler (which handles SCA tableOS RATIOS), CashFlowQueryHandler (which handles SCA table OS CASHFLOW),and IncomeStatementQueryHandler (which handles SCA tableOS_INCOMESTATEMENT). Each of these query handlers for OneSource canderive from SCAQueryHandler<T> 536 with a parameterization of XmlNode,which is defined in the System.Xml namespace of .NET. In addition, aOneSourceFormatHelper static class can be included, which provides asimple string formatting helper function called ToCurrencyString.

As will be understood, the above reusable framework involves variousdeployment dependencies. For the generic web services, the SCA InterfaceLibrary depends on the SCA Data Repository Library, and both of thesedepend on the active server methods (ASMX) web service. Note that sinceReflection is used to locate query handlers, no query handlers need bepresent for deployment, although the service will not do anythingwithout at least one query handler being present at runtime. For theSigma Dynamics web service, an sdclient.dll library can be used by thequery handlers to communicate with the Sigma Dynamics server; thesdclient.dll library depends on the Sigma Dynamics table handlers, whichdepend on the SCA Data Repository Library, which depends on the ASMX webservice, and the SCA Interface Library depends on the Sigma Dynamicstable handlers, the SCA Data Repository Library, and the ASMX webservice.

For the OneSource integration, the deployment dependencies are asfollows. OneSourceQueryProxy and OneSourceReportsProxy are proxylibraries generated from the published OneSource wsdl file using thewsdl.exe utility distributed with Visual Studio 2005. These twolibraries can be used by the query handlers to communicate with theOneSource web service. The OneSourceQueryProxy and OneSourceReportsProxydepend on the OneSource table handlers, which depend on the SCA DataRepository Library, which depends on the ASMX web service, and the SCAInterface Library depends on the OneSource table handlers, the SCA DataRepository Library, and the ASMX web service.

FIG. 6 shows example processes of integrating tools into a compositeapplication. Services from multiple application resources on a networkcan be combined (610). This can involve interfacing (620) with a salesforce automation tool configured to automate sales and sales forcemanagement functions (e.g., a CRM tool), interfacing (630) with areal-time predictive analytics tool, interfacing (640) with a knowledgemanagement tool, interfacing (650) with a calendar tool, collaborationtool or a combination of these, and interfacing (660) with a businessintelligence tool.

In addition, the combining can involve checking (670) for query handlers(e.g., sub-classes) that fit in a framework (e.g., an abstract class)defining a translation service configured at runtime, and converting(680) with a query handler between a first language service of the SFAtool and a second language service of another of the applicationresources. Thus, a dynamic code base can be employed, where a core ofthe code stays the same, and dynamic libraries (which can be found atruntime) can be added as needed. New code can be dropped into theframework, where this new code identifies the data source it can handle,thus allowing the system to be grown without changing the existing codebase.

The combining can further include connecting on-demand indexingsupported by a CRM tool with background crawling and indexing supportedby the knowledge management tool, such as described above. Moreover, thecombining can include connecting on-demand indexing supported by a CRMtool with natural language queries supported by the knowledge managementtool, such as described above. In any event, sales targeted informationcan be presented (690) from results obtained through the combining(610).

Embodiments of the present systems and techniques, and all of thefunctional operations described in this specification can be implementedin digital electronic circuitry, or in computer software, firmware, orhardware, including the structures disclosed in this specification andtheir structural equivalents, or in combinations of them. Embodiments ofthe present systems and techniques can be implemented as one or morecomputer program products, i.e., one or more modules of computer programinstructions encoded on a computer-readable medium for execution by, orto control the operation of, data processing apparatus. Thecomputer-readable medium can be a machine-readable device, e.g., amachine-readable storage device, storage medium, or memory device, ormultiple ones of them; or it can be a machine-readable communicationchannel on which a signal is propagated. The term “data processingapparatus” encompasses all apparatus, devices, and machines forprocessing data, including by way of example a programmable processor, acomputer, or multiple processors or computers. The apparatus caninclude, in addition to hardware, code that creates an executionenvironment for the computer program in question, e.g., code thatconstitutes processor firmware, a protocol stack, a database managementsystem, an operating system, or a combination of them. A propagatedsignal is an artificially generated signal, e.g., a machine-generatedelectrical, optical, or electromagnetic signal, that is generated toencode information for transmission to suitable receiver apparatus.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, and it can bedeployed in any form, including as a stand-alone program or as a module,component, subroutine, or other unit suitable for use in a computingenvironment. A computer program does not necessarily correspond to afile in a file system. A program can be stored in a portion of a filethat holds other programs or data (e.g., one or more scripts stored in amarkup language document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub-programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for executing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto-optical disks, or optical disks. However, a computerneed not have such devices. Moreover, a computer can be embedded inanother device, e.g., a mobile telephone, a personal digital assistant(PDA), a mobile audio player, a Global Positioning System (GPS)receiver, to name just a few. Information carriers suitable for storingcomputer program instructions and data include all forms of non-volatilememory, including by way of example semiconductor memory devices, e.g.,EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internalhard disks or removable disks; magneto-optical disks; and CD-ROM andDVD-ROM disks. The processor and the memory can be supplemented by, orincorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the presentsystems and techniques can be implemented on a computer having a displaydevice, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display)monitor, for displaying information to the user and a keyboard and apointing device, e.g., a mouse or a trackball, by which the user canprovide input to the computer. Other kinds of devices can be used toprovide for interaction with a user as well; for example, feedbackprovided to the user can be any form of sensory feedback, e.g., visualfeedback, auditory feedback, or tactile feedback; and input from theuser can be received in any form, including acoustic, speech, or tactileinput.

Embodiments of the present systems and techniques can be implemented ina computing system that includes a back-end component, e.g., a dataserver, or that includes a middleware component, e.g., an applicationserver, or that includes a front-end component, e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the present systems andtechniques, or any combination of such back-end, middleware, orfront-end components. The components of the system can be interconnectedby any form or medium of digital data communication, e.g., acommunication network. Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”) and a network ofnetworks, e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

Particular embodiments of the present systems and techniques have beendescribed. Other embodiments are within the scope of the followingclaims. For example, the actions recited in the claims can be performedin a different order and still achieve desirable results. Also, althoughthe reusable framework is described above in connection with databasesand web services, the framework can also be used to communicate withother systems and technologies, such as communicating through sockets orto a legacy system.

Furthermore, the integration of the KM search server can be done using aServlet or Java Servlet Page (JSP) with the search server's API for webapplications instead of utilizing the CRM tool's search framework. Analternate approach to crawling the CRM tool's data can be to create acustom crawler to index the data. Although in practice, the approach ofanalyzing the data in the database, and then crawling and indexing basedon the relationships in the data, can provide a simpler, reusableapproach that is just as robust as the custom crawler approach.

1. A computer system comprising: at least one processor; and at leastone non-transitory computer-readable medium coupled to the at least oneprocessor having stored thereon: a composite application that includes aframework for query handlers and that is configured to combine servicesfrom multiple application resources on a network; wherein the compositeapplication includes instructions which, when executed by the at leastone processor, causes the at least one processor to perform operationscomprising: checking for query handlers that fit in the frameworkincluded in the composite application; based on the checking, locatingquery handlers that fit in the framework included in the compositeapplication; incorporating, into the composite application at runtime,the located query handlers; and providing collaborative functionalitybetween the multiple application resources on the network by enablingmultiple independent application resources to communicate with oneanother through the located query handlers incorporated into thecomposite application at runtime and presenting results of thecollaborative functionality.